Recette n 18 Calculer la distance entre deux points
Page 51



public static double pythagorianDistance(double lat1, double lng1, double lat2, double lng2) {
   double distanceSecondes = Math.sqrt(
      Math.pow( Math.abs((lat2 * 3600) - (lat1 * 3600)), 2 )
      + Math.pow( Math.abs((lng2 * 3600) - (lng1 * 3600)), 2 )
   );
   return (distanceSecondes * 31);
}






public static double haversineDistance(double lat1, double lng1, double lat2, double lng2) {
   double earthRadius = 6378137.0; // Attention, lunit choisie ici dfinit lunit de "sortie" : ici, en mtres
   double dLat = Math.toRadians(lat2-lat1);
   double dLng = Math.toRadians(lng2-lng1);
   double sindLat = Math.sin(dLat / 2);
   double sindLng = Math.sin(dLng / 2);
   double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
              * Math.cos(Math.toRadians(lat1))
              * Math.cos(Math.toRadians(lat2));
   double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
   double dist = earthRadius * c;
   return dist;
}
